package com.cy.dda.service.collection;

import java.util.List;

import com.cy.dda.model.PageBean;
import com.cy.dda.model.ao.collection.CollectionRecordAddAO;
import com.cy.dda.model.ao.collection.CollectionRecordEditAO;
import com.cy.dda.model.query.collection.CollectionRecordListAdminQuery;
import com.cy.dda.model.query.collection.CollectionRecordListQuery;
import com.cy.dda.model.vo.collection.CollectionRecordAllListVO;
import com.cy.dda.model.vo.collection.CollectionRecordDetailInfoAdminVO;
import com.cy.dda.model.vo.collection.CollectionRecordDetailInfoVO;
import com.cy.dda.model.vo.collection.CollectionRecordListAdminVO;
import com.cy.dda.model.vo.collection.CollectionRecordListVO;
import com.cy.dda.model.vo.statistics.StatisticsCollectionRecordVO;

/**
 * 催收记录 CollectionRecordService
 *
 * @author: tanyilin
 * @create: 2018年11月2日 下午4:08:52
 */
public interface CollectionRecordService {

	/**
	 * 新增催收记录
	 * 
	 * @param addAO
	 * @param userId
	 */
	void addCollectionRecord(CollectionRecordAddAO addAO, Long userId);
	
	/**
	 * 编辑催记
	 * 
	 * @param editAO
	 */
	void doEdit(CollectionRecordEditAO editAO);
	
	/**
	 * 后台-查询催收记录列表
	 * 
	 * @param query
	 * @return
	 */
	PageBean<CollectionRecordListAdminVO> selectCollectionRecordListAdmin(CollectionRecordListAdminQuery query);
	
	/**
	 * 后台-查询催收记录信息详情
	 * 
	 * @param collectionRecordId
	 * @return
	 */
	CollectionRecordDetailInfoAdminVO selectCollectionRecordDetailInfoAdminVO(Long collectionRecordId);
	
	/**
	 * 查询，前台催收记录列表
	 * 
	 * @param query
	 * @return
	 */
	PageBean<CollectionRecordListVO> selectCollectionRecordList(CollectionRecordListQuery query);
	
	/**
	 * 前台（催收员用户）我的全部催收记录（日志）列表
	 * 
	 * @param query
	 * @return
	 */
	PageBean<CollectionRecordAllListVO> selectCollectionRecordAllList(CollectionRecordListQuery query);
	
	/**
	 * 根据催收员用户ID，统计近n天的催收日志数量
	 * 
	 * @param userId
	 * @param n
	 * @return
	 */
	List<StatisticsCollectionRecordVO> selectStatisticsCollectionRecordVO(Long userId, int n);
	
	/**
	 * 前台-查询催收记录信息详情
	 * 
	 * @param collectionRecordId
	 * @return
	 */
	CollectionRecordDetailInfoVO selectCollectionRecordDetailInfoVO(Long collectionRecordId);

	
}
